﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using DAO;
using DTO;
using BUS;
namespace ProductManagement
{
    public partial class frmQLGiaoHang : Form
    {
        bool quanLy;
        public frmQLGiaoHang()
        {
            InitializeComponent();
            
            quanLy = false;
        }
        public frmQLGiaoHang(bool _quanLy)
        {
            InitializeComponent();         
            quanLy = _quanLy;
        }
        private void LoadDanhSachGiaoHang()
        {
            String sqlString = "select gh.ID, gh.Ngay, gh.TaiXe, sum(ctxe.SoLuong) as SoLuong, HoanThanh from GiaoHang gh left join ChiTietXeDi ctxe on ctxe.MaGiaoHang=gh.ID group by gh.ID, gh.Ngay, gh.TaiXe, gh.HoanThanh";
            DataTable dt =  DataAccess.Query(sqlString);
            BindingSource bs = new BindingSource(dt, null);
            dgvGiaoHang.AutoGenerateColumns = false;
            dgvGiaoHang.DataSource = bs;
            int i=1;
            foreach (DataGridViewRow row in dgvGiaoHang.Rows)
            {
                row.Cells["STT"].Value = i;
                i++;
            }            
        }
        private void frmGiaoHang_Load(object sender, EventArgs e)
        {
            try
            {
                LoadDanhSachGiaoHang();
                clearAllFill();
                btnThem.Visible = false;
                dpkThoiGian.CustomFormat = "dd/MM/yyyy - hh:mm tt";
                dpkThoiGian.Format = DateTimePickerFormat.Custom;
                if (quanLy == true)
                {
                    Text = "Quản lý các đợt giao hàng";
                    btnPhanPhoi.Visible = false;
                    btnThuHoi.Visible = false;
                }
                else
                {
                    Text = "Hoàn tất giao hàng";
                    btnXoa.Visible = false;
                    btnCapNhat.Visible = false;
                    btnChiTietDi.Visible = false;
                    btnChiTietDi.Location = new Point(btnCapNhat.Location.X, btnCapNhat.Location.Y);
                    //btnClose.Location = new Point(btnChiTietDi.Location.X + btnChiTietDi.Width + 4, btnChiTietDi.Location.Y);
                    label3.Text = "Chọn đợt giao hàng";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Không thể load form\r\n" + ex.Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Close();
            }
        }
        private void clearAllFill()
        {
            txtID.Clear();
            txtTaiXe.Clear();
            dpkThoiGian.ResetText();
            btnChiTietDi.Enabled = false;
           
            btnCapNhat.Enabled = false;
            btnXoa.Enabled = false;
        }
        private void KiemTraHang(int idBinhGas)
        {

        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            try
            {
                GiaoHangDTO giaohang = new GiaoHangDTO
                   {
                       Ngay = dpkThoiGian.Value,
                       TaiXe = txtTaiXe.Text
                   };
                GiaoHangDAO.InsertGiaoHang(giaohang);
                MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                if (MessageBox.Show("Bạn có muốn thêm chi tiết xe đi không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    frmChiTietXeDi chiTietDiFrm = new frmChiTietXeDi(giaohang, true);
                    chiTietDiFrm.ShowDialog();
                }
                LoadDanhSachGiaoHang();
                clearAllFill();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Vui lòng nhập đầy đủ dữ liệu và kiểm tra dữ liệu đã nhập vào\n"+ex.ToString(), "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);                
            }
        }

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            try
            {
                GiaoHangDTO giaohang = new GiaoHangDTO
                   {
                       Id = Int32.Parse(txtID.Text),
                       Ngay = dpkThoiGian.Value,
                       TaiXe = txtTaiXe.Text
                   };
                GiaoHangDAO.UpdateGiaoHang(giaohang);
              //  if (MessageBox.Show("Bạn có muốn cập nhật danh sách hàng hóa?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
             //   {
             //       frmChiTietXeDi chiTietDiFrm = new frmChiTietXeDi(giaohang, false);
              //      chiTietDiFrm.ShowDialog();
             //   }
                MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LoadDanhSachGiaoHang();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Vui lòng nhập đầy đủ dữ liệu và kiểm tra dữ liệu đã nhập vào\n"+ex.ToString(), "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                throw;
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("Bạn có thật sự muốn xóa Nhật ký giao hàng và tất cả chi tiết của nó không?", "Thông báo",
                        MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
                {
                    foreach (DataGridViewRow aRow in dgvGiaoHang.SelectedRows)
                    {
                        GiaoHangBUS.DeleteGiaoHang((int)aRow.Cells["ID"].Value);
                    }
                    MessageBox.Show("Đã xóa thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadDanhSachGiaoHang();
                    clearAllFill();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Vui lòng nhập đầy đủ dữ liệu và kiểm tra dữ liệu đã nhập vào\n"+ex.ToString(), "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);                
            }
            
        }

        private void btnChiTietDi_Click(object sender, EventArgs e)
        {
            GiaoHangDTO giaohang = new GiaoHangDTO
            {
                Id = Int32.Parse(txtID.Text),
                Ngay = dpkThoiGian.Value,
                TaiXe = txtTaiXe.Text
            };
            if (quanLy == false)
            {                
                frmChiTietXeDi form = new frmChiTietXeDi(giaohang, true);
                form.ShowDialog();
            }
            else
            {
                frmChiTietXeDi form = new frmChiTietXeDi(giaohang, false);
                form.ShowDialog();
            }
        }

        private void btnChiTietVe_Click(object sender, EventArgs e)
        {
            frmChiTietXeVe form = new frmChiTietXeVe(Int32.Parse(txtID.Text));
            form.ShowDialog();
        }

        private void dgvGiaoHang_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void dgvGiaoHang_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvGiaoHang.SelectedRows.Count >0)
            {
                DataGridViewRow row = dgvGiaoHang.SelectedRows[0];
                txtID.Text = row.Cells["ID"].Value.ToString();
                dpkThoiGian.Value = (DateTime)row.Cells["Ngay"].Value;
                txtTaiXe.Text = row.Cells["TaiXe"].Value.ToString();
                btnCapNhat.Enabled = true;
                btnXoa.Enabled = true;
                btnChiTietDi.Enabled = true;
                btnThuHoi.Enabled = true;
                if (row.Cells["HoanThanh"].Value.Equals(true) == false)
                {
                    btnPhanPhoi.Enabled = true;
                }
            }
            else
            {
                btnCapNhat.Enabled = false;
                btnXoa.Enabled = false;
                btnChiTietDi.Enabled = false;
                btnPhanPhoi.Enabled = false;
                btnThuHoi.Enabled = false;
            }
        }

        private void btnPhanPhoi_Click(object sender, EventArgs e)
        {
            if (dgvGiaoHang.SelectedRows.Count > 0)
            {
                GiaoHangDTO giaoHang = new GiaoHangDTO();
                giaoHang.Id = (int)dgvGiaoHang.SelectedRows[0].Cells["ID"].Value;
                giaoHang.Ngay = (DateTime)dgvGiaoHang.SelectedRows[0].Cells["Ngay"].Value;
                giaoHang.TaiXe = (String)dgvGiaoHang.SelectedRows[0].Cells["TaiXe"].Value;
                frmPhanPhoi frm = new frmPhanPhoi(giaoHang);
                frm.ShowDialog();
                OnLoad(e);
            }
        }

        private void btnThuHoi_Click(object sender, EventArgs e)
        {
            if (dgvGiaoHang.SelectedRows.Count > 0)
            {
                GiaoHangDTO giaoHang = new GiaoHangDTO();
                giaoHang.Id = (int)dgvGiaoHang.SelectedRows[0].Cells["ID"].Value;
                giaoHang.Ngay = (DateTime)dgvGiaoHang.SelectedRows[0].Cells["Ngay"].Value;
                giaoHang.TaiXe = (String)dgvGiaoHang.SelectedRows[0].Cells["TaiXe"].Value;
                ThuVo frm = new ThuVo(giaoHang);                
                frm.ShowDialog();
            }            
        }

        private void btnHoanTat_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}
